package com.utility.project.common.constants;

/**
 * 
 * http 状态码 ---------------------------------------------------------------------------- 200 OK -
 * [GET]：服务器成功返回用户请求的数据，该操作是幂等的（Idempotent）。 400 INVALID REQUEST -
 * [POST/PUT/PATCH]：用户发出的请求有错误，服务器没有进行新建或修改数据的操作，该操作是幂等的。 401 Unauthorized - [*]：表示用户没有权限（令牌、用户名、密码错误）。 403 Forbidden -
 * [*] 表示用户得到授权（与401错误相对），但是访问是被禁止的。 404 NOT FOUND - [*]：用户发出的请求针对的是不存在的记录，服务器没有进行操作，该操作是幂等的。 406 Not Acceptable -
 * [GET]：用户请求的格式不可得（比如用户请求JSON格式，但是只有XML格式）。 410 Gone -[GET]：用户请求的资源被永久删除，且不会再得到的。 422 Unprocesable entity -
 * [POST/PUT/PATCH] 当创建一个对象时，发生一个验证错误。 500 INTERNAL SERVER ERROR - [*]：服务器发生错误，用户将无法判断发出的请求是否成功。 600 UN_KNOW_ERROR -
 * 未知错误 ----------------------------------------------------------------------------
 */

/**
 * @author liujinchao
 * @date 2022/12/20 17:03
 * @description http状态码
 */
@SuppressWarnings("AlibabaEnumConstantsMustHaveComment")
public enum HttpCodeEnum {

    OK(200, "操作成功"), INVALID_REQUEST(400, "参数错误"), UNAUTHORIZED(401, "没有权限"), FORBIDDEN(403, "禁止访问"),
    NOT_FOUND(404, "资源不存在"), ILLEGAL_OP(405, "非法操作"), NOT_ACCEPTABLE(406, "请求的格式不正确"), GONE(410, "数据被删除"),
    UNPROCESABLE_ENTITY(422, "参数验证错误"), INTERNAL_SERVER_ERROR(500, "服务器发生错误"), UN_KNOW_ERROR(500, "未知错误"),
    FAIL(501, "操作失败"), SETTING_FAIL(502, "缺少系统配置项"),

    MODEL_NOT_EXIST(1000, "模型不存在"), VERIFICATION_FAILED(1001, "业务逻辑验证未通过"), USERNAME_OR_PASSWORD_ERR(2000, "用户名或密码错误"),
    DELETE_DEFAULT_PHOTO_ERR(2001, "默认头像不可删除"), USER_NOT_FOUND(2002, "用户不存在"), RESULT_NOT_EXIST(2003, "结果不存在"),
    AUTH_EXPIRED(3000, "登录已失效"), TOKEN_ERR(3001, "token无效"), USER_LOCK(3002, "用户已锁定"), USER_FORBIDDEN(3003, "用户已禁用"),
    IP_ERR(3004, "访问被拒绝，IP地址异常"), RESOURCE_MONITOR_ERR(4001, "查询资源监视信息失败！"),
    BUSINESS_HOST_IP_ERR(4002, "获取网资源业务中台IP地址失败！"), BUSINESS_HOST_QUERY_ERR(4003, "请求目标服务器失败！"),
    SIPS_INTERFACE_SAVE_ID_ERR(4004, "接口保存时的接口ID只能为deviceinfo！"), SIPS_INTERFACE_SAVE_ERR(4005, "接口保存错误！"),
    SIPS_INTERFACE_GENERATE_TOKEN_ERR(4006, "生成token失败，请稍后再试！"), GATEWAY_PARAM_ISNULL(4007, "消息头校验不通过，参数不能为空"),
    GATEWAY_PARAM_TIMESTAMP_ERR(4008, "消息头校验不通过，timestamp参数错误"),
    GATEWAY_PARAM_REQUEST_SE_CHECK_ERR(4009, "消息头校验不通过，REQUEST参数错误"),
    GATEWAY_PARAM_HASH_CHECK_ERR(4010, "消息头校验不通过，HASH校验错误"), SOCKET_MESSAGE_ISNULL(4011, "socket消息体不能为空"),
    GATEWAY_SERVICE_PRIORITY_BUSI_ERR(4012, "当前服务响应忙，请求目标暂不能提供服务"),
    GATEWAY_SERVICE_PRIORITY_CHECK_ERR(4013, "服务优先级访问控制，请求目标暂不能提供服务"),
    GATEWAY_SERVICE_PRIORITY_REMOTE_ERR(4014, "网关在调用后台服务：服务优先级查询服务时无法调用成功，请检查配置中心的服务优先级查询服务"),
    GATEWAY_PARAM_DECODE_ERR(4015, "网关解密请求参数异常，请检查入参");

    /**
     * 编码
     */
    private final int code;
    /**
     * 对应的内容
     */
    private final String message;

    HttpCodeEnum(final int code, final String message) {
        this.code = code;
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public int getCode() {
        return code;
    }

}
